//
//  YHKEmoticonCollectionViewCell.swift
//  xinlangweiBo2
//
//  Created by 杨和逵 on 16/3/8.
//  Copyright © 2016年 yanghekui. All rights reserved.
//

import UIKit

/*
分析：
   1.添加20个表情---->创建button
   2.添加到cell里---->设置frame
   3.把这20个表情，放置在一个重用数组中---->定义一个数组
   4.赋值的时候，直接去修改 表情的图片----->需要遍历
*/

class YHKEmoticonCollectionViewCell: UICollectionViewCell {
    
    var emoticons:[YHKEmoticonMdeol]?{
        didSet{
            //传值
            //对这个数组进行遍历，能拿到两个参数，一个是索引和值
            for (index,button) in reuserButtons.enumerate(){
//MARK:--重用问题------->  //让所有的表情先隐藏
                button.hidden = true
            }
            
            for (index,emoticon) in emoticons!.enumerate(){
                
                //根据索引，拿到对应的button
                let button = reuserButtons[index]
                
                
                //将数据传递到自定义的button数组里
                button.emoticon = emoticon
                
//                //知道绝对路径
//                if let png = emoticon.png{
//                    
//                    //拼接路径
//                //需要先拿到paht，到管理者哪里获取文件夹的入径
//                    
//                    //拿到图片
//                    let imagePath = "\(emoticon.path!)/\(png)"
//                    
////MARK:--为了解决重用，需要把tit设置为nil
//                    button.setImage(UIImage(named:imagePath), forState: .Normal)
//                    button.setTitle(nil, forState: .Normal)
//                    
//                    //使用它的时候在显示表情
//                    button.hidden = false
//                    
//                    
//                }
//                
//                //显示emoji
//                if let emoji = emoticon.emoji{
////MARK:--为了解决重用，需要把image设置为nil
//                    button.setImage(nil, forState: .Normal)
//                    button.setTitle(emoji, forState: .Normal)
//                    
//                    //使用数据的时候，让按钮显示
//                    button.hidden = false
//                    
//                    //修改titleLabel，让图片大一点
//                    button.titleLabel?.font = UIFont.systemFontOfSize(38)
//                }
            }
        }
    }
    
    
    
    //创建视图三部曲
    
    //第一部 init
    override init (frame: CGRect) {
        
        super.init(frame: frame)
        
        setupView()
    }

   required init?(coder aDecoder: NSCoder) {
       fatalError("init(coder:) has not been implemented")
   }
    
    //私有方法，添加控件和添加约束
    private func setupView(){
    
        backgroundColor = randomColor()
        
        //调用方法
        addEmotions()
        
     
    
    }
    //MARK:--懒加载

    //创建一个存放button的数组----数组需要懒加载才能初始化
   private lazy var reuserButtons:[YHKEmoticonButton] = [YHKEmoticonButton]()

    //创建20个btn，用循环
    private func addEmotions(){
        
        //表情的宽
        let width = frame.size.width / 7
        //表情的高
        let height = frame.size.height / 3
        
        for i in 0..<20{
            
            let button = YHKEmoticonButton(type: .Custom)
            
            //  列
            let col = i % 7
            
            //  行
            let row = i / 7
            button.frame = CGRectMake(CGFloat(col) * width, CGFloat(row) * height, width, height)
            
            button.setTitleColor(UIColor.redColor(), forState: UIControlState.Normal)
            
            //按钮的点击
            button.addTarget(self, action: "emoticonClick:", forControlEvents: UIControlEvents.TouchUpInside)
            
            contentView.addSubview(button)//添加到cell上
            
            reuserButtons.append(button)//存放在数组中
            
        }
        
        //设置删除按钮的frame
        deleteButton.frame = CGRectMake(6 * width, 2 * height, width, height)
        //添加按钮
        contentView.addSubview(deleteButton)
        
    }
    
    
    
    //按钮的点击事件
    @objc private func emoticonClick(button:YHKEmoticonButton){
        
        //需要将点击的btn传到输入框中，夸了多个控制器，用监听
        NSNotificationCenter.defaultCenter().postNotificationName(kNotificaionEmoticonTransform, object: nil, userInfo: ["emoticon":button.emoticon!])
        
        
        //添加最近使用过的表情
        YHKEmoticonManager.addRecentEmoticon(button.emoticon)
    }
    
    
    //创建删除按钮
    private lazy var deleteButton:UIButton = {
    
        let button = UIButton(type: UIButtonType.Custom)
        
        button.setImage(UIImage(named: "compose_emotion_delete"), forState: UIControlState.Normal)
        button.setImage(UIImage(named: "compose_emotion_delete_highlighted"), forState: UIControlState.Highlighted)
        
        button.addTarget(self, action: "emoticonClick", forControlEvents: UIControlEvents.TouchUpInside)
        
        return button
    }()
    
    
}
